package package06章_面向对象编程_基础._01oop;

/**
 * ClassName: 面向对象的理解与类的实例化
 * Package: package06章_面向对象编程_基础.oop01
 * Description:
 * <p>
 * <p>
 * 1. 面向对象内容的三条主线：
 * - Java类及类的成员：（重点）属性、方法、构造器；（熟悉）代码块、内部类
 * - 面向对象的特征：封装、继承、多态、（抽象）
 * - 其他关键字的使用：this、super、package、import、static、final、interface、abstract等
 * <p>
 * <p>
 * 2. 面向过程编程(POP)  vs  面向对象编程(OOP)
 * 2.1 简单的语言描述二者的区别
 * > 面向过程：
 * - 以`函数`为组织单位。
 * - 是一种“`执行者思维`”，适合解决简单问题。扩展能力差、后期维护难度较大。
 * <p>
 * > 面向对象：
 * - 以`类`为组织单位。每种事物都具备自己的`属性`和`行为/功能`。
 * - 是一种“`设计者思维`”，适合解决复杂问题。代码扩展性强、可维护性高。
 * <p>
 * 2.2 二者关系：
 * 我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程！
 * <p>
 * <p>
 * 3.
 * > 面向对象编程的两个核心概念：类（Class）、对象（Object）
 * > 谈谈对这两个概念的理解？
 * 类:具有相同特征的事物的抽象描述，是`抽象的`、概念上的定义。
 * 对象：实际存在的该类事物的`每个个体`，是`具体的`，因而也称为`实例(instance)`。
 * <p>
 * <p>
 * 4. 类的声明与使用
 * 4.1 体会：设计类，其实就是设计类的成员
 * class Person{
 * <p>
 * }
 * <p>
 * 4.2 类的内部成员一、二：
 * <p>
 * 成员之一：属性、成员变量、field（字段、域）
 * 成员之二：（成员）方法、函数、method
 * <p>
 * <p>
 * <p>
 * 4.3 类的实例化
 * 等价描述：类的实例化 <=> 创建类的对象  <=> 创建类的实例
 * 格式：类类型 对象名 = 通过new创建的对象实体
 * 举例：
 * Phone p1 = new Phone();
 * Scanner scan = new Scanner(System.in);
 * String str = new String();
 * <p>
 * <p>
 * 5. 面向对象完成具体功能的操作的三步流程（非常重要）
 * 步骤1：创建类，并设计类的内部成员（属性、方法）
 * 步骤2：创建类的对象。比如：Phone p1 = new Phone();
 * 步骤3：通过对象，调用其内部声明的属性或方法，完成相关的功能
 *
 * @Author lys
 * @Create 2024/1/22 21:14
 * @Version 1.0
 */
public class e_6_01面向对象的理解与类的实例化 {
    public static void main(String[] args) {
        //复习：数据类型 变量名 = 变量值
//        Scanner scann = new Scanner(System.in);

        //创建Phone的对象
        Phone p1 = new Phone();

        //通过Phone的对象，调用其内部声明的属性或方法
        //格式："对象.属性" 或 "对象.方法"
        p1.name = "huawei mate50";
        p1.price = 6999;

        System.out.println("name = " + p1.name + ", price = " + p1.price);

        //调用方法
        p1.call();
        p1.sendMessage("有内鬼，终止交易");
        p1.playGame();
    }


}
